diff --git a/system/core/CodeIgniter.php b/system/core/CodeIgniter.php
index 324b4d8..f270863 100644
--- a/system/core/CodeIgniter.php
+++ b/system/core/CodeIgniter.php
@@ -232,7 +232,6 @@
 		return CI_Controller::get_instance();
 	}
 
-
 	if (file_exists(APPPATH.'core/'.$CFG->config['subclass_prefix'].'Controller.php'))
 	{
 		require APPPATH.'core/'.$CFG->config['subclass_prefix'].'Controller.php';
diff --git a/system/core/Input.php b/system/core/Input.php
index 18406fe..f6213c3 100644
--- a/system/core/Input.php
+++ b/system/core/Input.php
@@ -209,7 +209,6 @@
 		return $this->_fetch_from_array($_POST, $index, $xss_clean);
 	}
 
-
 	// --------------------------------------------------------------------
 
 	/**
diff --git a/system/core/Lang.php b/system/core/Lang.php
index e74304d..251cf6e 100644
--- a/system/core/Lang.php
+++ b/system/core/Lang.php
@@ -120,7 +120,6 @@
 			}
 		}
 
-
 		if ( ! isset($lang) OR ! is_array($lang))
 		{
 			log_message('error', 'Language file contains no data: language/'.$idiom.'/'.$langfile);
diff --git a/system/core/Output.php b/system/core/Output.php
index 3f2f84f..e969ba8 100644
--- a/system/core/Output.php
+++ b/system/core/Output.php
@@ -382,10 +382,9 @@
 			$output = $this->minify($output, $this->mime_type);
 		}
 
-
 		// --------------------------------------------------------------------
 
-		// Do we need to write a cache file?  Only if the controller does not have its
+		// Do we need to write a cache file? Only if the controller does not have its
 		// own _output() method and we are not dealing with a cache file, which we
 		// can determine by the existence of the $CI object above
 		if ($this->cache_expiration > 0 && isset($CI) && ! method_exists($CI, '_output'))
diff --git a/system/core/URI.php b/system/core/URI.php
index 13530bd..33f7d21 100644
--- a/system/core/URI.php
+++ b/system/core/URI.php
@@ -473,7 +473,7 @@
 		$segments = array_slice($this->$segment_array(), ($n - 1));
 		$i = 0;
 		$lastval = '';
-		$retval  = array();
+		$retval = array();
 		foreach ($segments as $seg)
 		{
 			if ($i % 2)
@@ -640,7 +640,6 @@
 		return $this->uri_string;
 	}
 
-
 	// --------------------------------------------------------------------
 
 	/**
diff --git a/system/core/Utf8.php b/system/core/Utf8.php
index bc7afed..efe3c10 100644
--- a/system/core/Utf8.php
+++ b/system/core/Utf8.php
@@ -64,7 +64,6 @@
 			define('MB_ENABLED', FALSE);
 		}
 
-
 		if (
 			@preg_match('/./u', 'é') === 1	// PCRE must support UTF-8
 			&& function_exists('iconv')	// iconv must be installed
diff --git a/system/libraries/Cache/Cache.php b/system/libraries/Cache/Cache.php
index ce71445..7ec2380 100644
--- a/system/libraries/Cache/Cache.php
+++ b/system/libraries/Cache/Cache.php
@@ -103,7 +103,7 @@
 			}
 		}
 
-		isset($config['key_prefix']) AND $this->key_prefix = $config['key_prefix'];
+		isset($config['key_prefix']) && $this->key_prefix = $config['key_prefix'];
 
 		if (isset($config['backup']) && in_array('cache_'.$config['backup'], $this->valid_drivers))
 		{
diff --git a/system/libraries/Email.php b/system/libraries/Email.php
index 9207fc9..edca303 100644
--- a/system/libraries/Email.php
+++ b/system/libraries/Email.php
@@ -47,20 +47,20 @@
 	public $smtp_port	= 25;			// SMTP Port
 	public $smtp_timeout	= 5;			// SMTP Timeout in seconds
 	public $smtp_crypto	= '';			// SMTP Encryption. Can be null, tls or ssl.
-	public $wordwrap	= TRUE;			// TRUE/FALSE  Turns word-wrap on/off
+	public $wordwrap	= TRUE;			// TRUE/FALSE - Turns word-wrap on/off
 	public $wrapchars	= 76;			// Number of characters to wrap at.
-	public $mailtype	= 'text';		// text/html  Defines email formatting
+	public $mailtype	= 'text';		// text/html - Defines email formatting
 	public $charset		= 'utf-8';		// Default char set: iso-8859-1 or us-ascii
 	public $multipart	= 'mixed';		// "mixed" (in the body) or "related" (separate)
 	public $alt_message	= '';			// Alternative message for HTML emails
-	public $validate	= FALSE;		// TRUE/FALSE.  Enables email validation
+	public $validate	= FALSE;		// TRUE/FALSE - Enables email validation
 	public $priority	= 3;			// Default priority (1 - 5)
 	public $newline		= "\n";			// Default newline. "\r\n" or "\n" (Use "\r\n" to comply with RFC 822)
-	public $crlf		= "\n";			// The RFC 2045 compliant CRLF for quoted-printable is "\r\n".  Apparently some servers,
+	public $crlf		= "\n";			// The RFC 2045 compliant CRLF for quoted-printable is "\r\n". Apparently some servers,
 									// even on the receiving end think they need to muck with CRLFs, so using "\n", while
 									// distasteful, is the only thing that seems to work for all environments.
 	public $dsn		= FALSE;		// Delivery Status Notification
-	public $send_multipart	= TRUE;		// TRUE/FALSE - Yahoo does not like multipart alternative, so this is an override.  Set to FALSE for Yahoo.
+	public $send_multipart	= TRUE;		// TRUE/FALSE - Yahoo does not like multipart alternative, so this is an override. Set to FALSE for Yahoo.
 	public $bcc_batch_mode	= FALSE;	// TRUE/FALSE - Turns on/off Bcc batch feature
 	public $bcc_batch_size	= 200;		// If bcc_batch_mode = TRUE, sets max number of Bccs in each batch
 
@@ -989,7 +989,6 @@
 					$this->_finalbody = $hdr.$this->_finalbody;
 				}
 
-
 				if ($this->send_multipart !== FALSE)
 				{
 					$this->_finalbody .= '--'.$this->_alt_boundary.'--';
@@ -1661,7 +1660,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 *  SMTP Authenticate
+	 * SMTP Authenticate
 	 *
 	 * @return	bool
 	 */
diff --git a/system/libraries/Session/Session.php b/system/libraries/Session/Session.php
index 9785060..fec9b5b 100755
--- a/system/libraries/Session/Session.php
+++ b/system/libraries/Session/Session.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -86,7 +86,7 @@
 		// Get valid drivers list
 		$this->valid_drivers = array(
 			'Session_native',
-		   	'Session_cookie'
+			'Session_cookie'
 		);
 		$key = 'sess_valid_drivers';
 		$drivers = isset($params[$key]) ? $params[$key] : $CI->config->item($key);
@@ -243,7 +243,7 @@
 	/**
 	 * Fetch all flashdata
 	 *
-	 * @return	array   Flash data array
+	 * @return	array	Flash data array
 	 */
 	public function all_flashdata()
 	{
diff --git a/system/libraries/Session/drivers/Session_native.php b/system/libraries/Session/drivers/Session_native.php
index da744f3..a837b89 100755
--- a/system/libraries/Session/drivers/Session_native.php
+++ b/system/libraries/Session/drivers/Session_native.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
diff --git a/system/libraries/javascript/Jquery.php b/system/libraries/javascript/Jquery.php
index 8739d14..ed02fad 100644
--- a/system/libraries/javascript/Jquery.php
+++ b/system/libraries/javascript/Jquery.php
@@ -700,7 +700,6 @@
 		return $updater."\t\t$($container).load('$controller'$request_options);";
 	}
 
-
 	// --------------------------------------------------------------------
 	// Pre-written handy stuff
 	// --------------------------------------------------------------------
@@ -716,7 +715,7 @@
 	protected function _zebraTables($class = '', $odd = 'odd', $hover = '')
 	{
 		$class = ($class !== '') ? '.'.$class : '';
-		$zebra  = "\t\$(\"table{$class} tbody tr:nth-child(even)\").addClass(\"{$odd}\");";
+		$zebra = "\t\$(\"table{$class} tbody tr:nth-child(even)\").addClass(\"{$odd}\");";
 
 		$this->jquery_code_for_compile[] = $zebra;
 
